package com.tiancheng.trade.merchant.model;


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.tiancheng.trade.merchant.enums.MerchantSettleRuleCycleTypeEnum;
import com.tiancheng.trade.merchant.enums.MerchantSettleRuleStatusEnum;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

import jakarta.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 商户清分规则表
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@TableName(value = "merchant_settle_rule")
public class MerchantSettleRule extends BaseModel {
    /**
     * 交易中台商户编码
     */
    @NotBlank(message = "交易中台商户编码不能为空")
    private String merchantCode;
    /**
     * 机构支付通道
     */
    @NotNull(message = "机构支付通道不允许为空")
    private Long orgPaymentChannelId;
    /**
     * 规则编码
     */
    private String ruleCode;
    /**
     * 平台分佣百分比值
     */
    private BigDecimal platformPercent;
    /**
     * 清分周期类型：T=按日（如T+1），M=按月固定日（如每月10日）
     *
     * @see MerchantSettleRuleCycleTypeEnum
     */
    private String cycleType;
    /**
     * 清分周期值，cycle_type为T，cycle_value为1时代表T+1清分
     */
    private String cycleValue;
    /**
     * 规则状态：1=生效；2:作废
     *
     * @see MerchantSettleRuleStatusEnum
     */
    private Integer ruleStatus;
    /**
     * 规则失效时间
     */
    private LocalDateTime expireDate;
    /**
     * 备注
     */
    private String remark;

    /**
     * 该属性为多余属性，无用
     */
    @TableField(exist = false)
    private Integer isDelete;
    /**
     * 商户名称
     */
    @TableField(exist = false)
    private String merchantName;
    /**
     * 商户名称
     */
    @TableField(exist = false)
    private String settlementType;
}
